const isDEV = process.env.NODE_ENV === 'development'

/**
 * 1、@babel/preset-typescript, // ts语法转换为js语法
 * 2、@babel/preset-react // jsx语法
 * !.如果您使用的是 `Babel` 和 `React 17`，您可能需要将 "runtime": "automatic" 添加到配置中。否则可能会出现错误：Uncaught ReferenceError: React is not defined
 * 3、@babel/preset-env // babel 编译的预设，可以转换目前最新的js标准语法
 */

module.exports = {
  // 执行顺序由下往上
  presets: [
    [
      '@babel/preset-env',
      {
        // 默认会读取 .browserslistrc，但如果 babel.config.js 中显式指定了 targets，则 Babel 的配置优先级更高。
        // "targets": { "chrome": 35, "ie": 9 },
        targets: { browsers: ['> 1%', 'last 2 versions', 'not ie <= 8'] },
        useBuiltIns: 'usage', // 根据配置的浏览器兼容,以及代码中使用到的api进行引入polyfill按需添加
        corejs: 3, // 配置使用core-js使用的版本
        loose: true,
      },
    ],
    ['@babel/preset-react', { runtime: 'automatic' }],
    '@babel/preset-typescript',
  ],
  plugins: [
    ['@babel/plugin-proposal-decorators', { legacy: true }],
    // react热更新
    isDEV && require.resolve('react-refresh/babel'),
  ].filter(Boolean), // 过滤空值
}
